import java.util.Arrays;

/**
 * 给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。
 * 请你找出并返回这两个正序数组的 中位数 。
 */
public class Test4 {

    public static void main(String[] args) {
        int[] arr1 = {1,3};
        int[] arr2 = {2,7};
        System.out.println(findMedianSortedArrays(arr1, arr2));
    }
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int length = (nums1.length + nums2.length + 1) >> 1;
        if (nums1.length == 0) length = (nums2.length+1)/2;
        if (nums2.length == 0) length = (nums1.length+1)/2;
        int i = 0;
        int j = 0;
        int temp = 0;
        while ( length > 0 && i<nums1.length && j < nums2.length) {
            if (nums1[i] <= nums2[j]) {
                temp = nums1[i++];
            }else{
                temp = nums2[j++];
            }
            length--;
        }
        if (i == nums1.length){
            while (length>0){
                temp = nums2[j++];
                length--;
            }
        }
        if (j == nums2.length){
            while (length>0){
                temp = nums1[i++];
                length--;
            }
        }
        if ((nums1.length + nums2.length) % 2 == 0){
            if (nums1.length == i){
                return (double)(nums2[j]+temp)*1.0/2;
            }else if (nums2.length == j){
                return (double)(nums1[i]+temp)*1.0/2;
            }else{
                int temp2 = Math.min(nums1[i], nums2[j]);
                return (temp+temp2)*1.0/2;
            }
        }else{
            return (double)(temp);
        }
    }
}
